/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.isd.global.web;



import com.isd.global.modelo.CorreoElectronico;
import com.isd.global.modelo.Parametro;
import com.isd.global.rn.ParametrosRN;
import com.isd.global.util.JsfUtil;
import com.isd.global.util.SenderEmail;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author mbascolo
 */
@ManagedBean(name="solicitudCliente")
@ViewScoped
public class SolicitudCliente {
    
    @EJB private ParametrosRN parametroRN;    
    
    /**
     * Creates a new instance of SolicitudCliente
     */
    
    
    
    Parametro p;
    
    private String nombre;
    private Date fechaNacimiento;
    private String cuit;    
    private String provincia;
    private String ciudad;
    private String direccion;
    private String telefono;
    private String celular;     
    private String email;        
    
    private String razonSocial;            
    private String nombreFantasia;
    private String provinciaNeg;    
    private String ciudadNeg;
    private String direccionNeg;    
    private String telefonoNeg;
    
    private boolean disponeLocal;
    
    private int mtrosCuadrados;
    private String tipoNegocio;
    private int antiguedad;
    private String marcas;
    private String proveedores;
    
    private boolean disponeInternet;
    
    private String comentario;
    
    
    
    
    @EJB private MailFactory mailFactoryBean;
     
    public SolicitudCliente() {
         
    }     
    
    @PostConstruct
    private void init() {

        try {            
            p = parametroRN.getParametros();            

        } catch (Exception ex) {

        }
    }
    
    public void confirmarSolicitud(){
        enviarNotificaciones();        
        reset();        
    }
    

    public CorreoElectronico generarCorreoElectronicoCliente(){

        try {
            
            String asunto = "Solicitud para cliente";
            String destinatario = mailFactoryBean.validarDestinatario(email, false);
            SimpleDateFormat formateadorFecha = new SimpleDateFormat("dd/MM/yyyy");
            
            
            List<String> contenido = new ArrayList<String>();
            contenido.add("Estimado " + nombre + ":");
            contenido.add("Su solicitud para ser nuestro cliente ha sido enviada y en breve nos pondremos en contacto con usted.");
            contenido.add("Los datos que usted ha ingresado son los siguientes:\n\n");            
            
            contenido.add("\nDatos de contacto");
            contenido.add("---------------------------------------------------------------------------");
            contenido.add("Contacto: " + nombre);
            contenido.add("Fecha de nacimiento:" + formateadorFecha.format(fechaNacimiento));
            contenido.add("Provincia: " + provincia);
            contenido.add("Ciudad: " + ciudad);
            contenido.add("Dirección: " + direccion);
            contenido.add("Telefono: " + telefono + " | Celular: " + celular);
            contenido.add("Email: " + email);            
            contenido.add("\nDatos del negocio");
            contenido.add("---------------------------------------------------------------------------");
            contenido.add("Razón social:" + razonSocial);
            contenido.add("Nombre del fantasía:" + nombreFantasia);
            contenido.add("C.U.I.T.: " + cuit);            
            contenido.add("Provincia: " + provinciaNeg);
            contenido.add("Ciudad: " + ciudadNeg);
            contenido.add("Dirección:" + direccionNeg);
            contenido.add("Teléfono:" + telefonoNeg);
            contenido.add("Dispone local comercial:" + (disponeLocal ? "Si" : "No"));
            contenido.add("Metros cuadrados:" + (mtrosCuadrados > 0 ? mtrosCuadrados : "N/D"));
            contenido.add("Tipo de Negocio:" + tipoNegocio);
            contenido.add("Antigüedad:" + (antiguedad > 0 ? antiguedad : "N/D"));
            contenido.add("Principales marcas:" + marcas);
            contenido.add("Principales proveedores:" + proveedores);
            contenido.add("Dispone conexión a internet:" + (disponeInternet ? "Si" : "No"));
            contenido.add("\n");
            contenido.add("---------------------------------------------------------------------------");
            contenido.add("Comentario:\n" + comentario);
            contenido.add("Muchas gracias por utilizar nuestra tienda virtual! ");
            
            String mensaje = mailFactoryBean.generarMensaje(asunto,contenido);
            
            return new CorreoElectronico(asunto, destinatario, mensaje);
            
        } catch (Exception e) {
            
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, "generarCorreoElectronicoCliente", e);            
            return new CorreoElectronico("Error", "claudiotrosch@gmail.com", "Problemas para generar correo confirmación de solicitud a cliente");
        }
    }

    public CorreoElectronico generarCorreoElectronicoEmpresa() {
        
        try {            
            
            String asunto = "Solicitud de cliente: " + razonSocial;
            String destinatarios = mailFactoryBean.validarDestinatario(p.getEmailRecepcionConsulta(), false);
            SimpleDateFormat formateadorFecha = new SimpleDateFormat("dd/MM/yyyy");
            
            List<String> parrafos = new ArrayList<String>();

            parrafos.add("Un potencial cliente ha ingresado los datos desde la tienda virtual desde la solicitud de clientes\n");
            parrafos.add("\nDatos de contacto");
            parrafos.add("---------------------------------------------------------------------------");
            parrafos.add("Contacto: " + nombre);
            parrafos.add("Fecha de nacimiento:" + formateadorFecha.format(fechaNacimiento));
            parrafos.add("Provincia: " + provincia);
            parrafos.add("Ciudad: " + ciudad);
            parrafos.add("Dirección: " + direccion);
            parrafos.add("Telefono: " + telefono + " | Celular: " + celular);
            parrafos.add("Email: " + email);            
            parrafos.add("\nDatos del negocio");
            parrafos.add("---------------------------------------------------------------------------");
            parrafos.add("Razón social:" + razonSocial);
            parrafos.add("Nombre del fantasía:" + nombreFantasia);
            parrafos.add("C.U.I.T.: " + cuit);            
            parrafos.add("Provincia: "+provinciaNeg);
            parrafos.add("Ciudad: "+ ciudadNeg);
            parrafos.add("Dirección:" + direccionNeg);
            parrafos.add("Teléfono:" + telefonoNeg);
            parrafos.add("Dispone local comercial:" + (disponeLocal ? "Si":"No"));
            parrafos.add("Metros cuadrados:" + (mtrosCuadrados > 0 ? mtrosCuadrados : "N/D"));
            parrafos.add("Tipo de Negocio:" + tipoNegocio);
            parrafos.add("Antigüedad:" + (antiguedad > 0 ? antiguedad : "N/D"));
            parrafos.add("Principales marcas:" + marcas);
            parrafos.add("Principales proveedores:" + proveedores);
            parrafos.add("Dispone conexión a internet:" + (disponeInternet ? "Si":"No"));
            parrafos.add("\n");
            parrafos.add("---------------------------------------------------------------------------");
            parrafos.add("Comentario:\n" + comentario);

            String mensaje = mailFactoryBean.generarMensaje(asunto,parrafos);
            return new CorreoElectronico(asunto, destinatarios, mensaje);
            
        } catch (Exception e) {
            
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, "generarCorreoElectronicoCliente", e);            
            return new CorreoElectronico("Error", "claudiotrosch@gmail.com", "Problemas para generar correo confirmación de solicitud a empresa");
        }
    }

    private void reset() {
                
        nombre = "";
        provincia = "";
        ciudad = "";
        direccion = "";
        telefono = "";
        celular = "";   
        email = "";
        
        razonSocial = "";
        nombreFantasia = "";
        cuit = "";        
        provinciaNeg = "";
        ciudadNeg = "";
        direccionNeg = "";
        telefonoNeg = "";
        
        disponeLocal = false;
        
        mtrosCuadrados = 0;
        tipoNegocio = "";
        antiguedad = 0;
        marcas = "";
        proveedores = "";   
        
        disponeInternet = false;
                
        comentario = "";       
        
    }
     
    public void enviarNotificaciones(){

        List<CorreoElectronico> correos = new ArrayList<CorreoElectronico>();

        correos.add(generarCorreoElectronicoEmpresa());
        correos.add(generarCorreoElectronicoCliente());
        
        JsfUtil.addInfoMessage("Su solicitud ha sido enviada, en breve nos pondremos en contacto con usted", "");

        //Enviamos los correos con un nuevo hilo...
        SenderEmail se = new SenderEmail(mailFactoryBean, correos);
        se.start();
    }


    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    
    public Date getFechanacimiento() {
        return fechaNacimiento;
    }

    public void setFechanacimiento(Date fechanacimiento) {
        this.fechaNacimiento = fechanacimiento;
    }

    public String getCuit() {
        return cuit;
    }

    public void setCuit(String cuit) {
        this.cuit = cuit;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getCelular() {
        return celular;
    }

    public void setCelular(String celular) {
        this.celular = celular;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public ParametrosRN getParametroRN() {
        return parametroRN;
    }

    public void setParametroRN(ParametrosRN parametroRN) {
        this.parametroRN = parametroRN;
    }   

    public String getDireccionNeg() {
        return direccionNeg;
    }

    public void setDireccionNeg(String direccionNeg) {
        this.direccionNeg = direccionNeg;
    }

    public String getCiudadNeg() {
        return ciudadNeg;
    }

    public void setCiudadNeg(String ciudadNeg) {
        this.ciudadNeg = ciudadNeg;
    }

    public String getProvinciaNeg() {
        return provinciaNeg;
    }

    public void setProvinciaNeg(String provinciaNeg) {
        this.provinciaNeg = provinciaNeg;
    }

    public String getRazonSocial() {
        return razonSocial;
    }

    public void setRazonSocial(String razonSocial) {
        this.razonSocial = razonSocial;
    }

    public String getComentario() {
        return comentario;
    }

    public void setComentario(String comentario) {
        this.comentario = comentario;
    }

    public int getMtrosCuadrados() {
        return mtrosCuadrados;
    }

    public void setMtrosCuadrados(int mtrosCuadrados) {
        this.mtrosCuadrados = mtrosCuadrados;
    }

    public String getProvincia() {
        return provincia;
    }

    public void setProvincia(String provincia) {
        this.provincia = provincia;
    }

    public String getCiudad() {
        return ciudad;
    }

    public void setCiudad(String ciudad) {
        this.ciudad = ciudad;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getNombreFantasia() {
        return nombreFantasia;
    }

    public void setNombreFantasia(String nombreFantasia) {
        this.nombreFantasia = nombreFantasia;
    }

    public String getTelefonoNeg() {
        return telefonoNeg;
    }

    public void setTelefonoNeg(String telefonoNeg) {
        this.telefonoNeg = telefonoNeg;
    }

    public boolean isDisponeLocal() {
        return disponeLocal;
    }

    public void setDisponeLocal(boolean disponeLocal) {
        this.disponeLocal = disponeLocal;
    }

    public String getTipoNegocio() {
        return tipoNegocio;
    }

    public void setTipoNegocio(String tipoNegocio) {
        this.tipoNegocio = tipoNegocio;
    }

    public int getAntiguedad() {
        return antiguedad;
    }

    public void setAntiguedad(int antiguedad) {
        this.antiguedad = antiguedad;
    }

    public String getMarcas() {
        return marcas;
    }

    public void setMarcas(String marcas) {
        this.marcas = marcas;
    }

    public String getProveedores() {
        return proveedores;
    }

    public void setProveedores(String proveedores) {
        this.proveedores = proveedores;
    }

    public boolean isDisponeInternet() {
        return disponeInternet;
    }

    public void setDisponeInternet(boolean disponeInternet) {
        this.disponeInternet = disponeInternet;
    }
    
}
